package com.richest.api.utils;

import java.security.MessageDigest;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.richest.util.MD5Util;

/**
 * 微信支付接口请求类
 * 
 * @author 赵鸿超 2017年9月24日
 *
 */
public class RequestHandler {
	private static Logger logger = LoggerFactory.getLogger(RequestHandler.class);
	public static final String CHARSET = "UTF-8"; // 字符集

	/**
	 * 生成签名
	 * 
	 * @author 赵鸿超 2017年9月24日
	 * @param packageParams
	 *            参数Map
	 * @param strApiKey
	 *            API密钥
	 * @return String 签名
	 */
	public static String createSign(Map<String, String> packageParams, String strApiKey) throws Exception {
		StringBuffer strBufParas = new StringBuffer(); // 对参数按照key=value的格式组成串
		Set es = packageParams.entrySet();
		Iterator it = es.iterator();
		while (it.hasNext()) {
			Map.Entry entry = (Map.Entry) it.next();
			String k = (String) entry.getKey();
			String v = (String) entry.getValue();
			if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
				strBufParas.append(k + "=" + v + "&");
			}
		}
		strBufParas.append("key=" + strApiKey);
		logger.debug("MD5 String:" + strBufParas.toString());

		String strSign = MD5Util.MD5Encode(strBufParas.toString(), CHARSET).toUpperCase();

		return strSign;
	}
}
